"""4.2 函数的参数传递"""
'''一、参数传递的机制'''
# 1）不可变对象（int,bool,str,tuple...）：值传递
num=10
def modify(num):
    print("函数内的num:",id(num),num)
    num=100
    print("修改后的num:",id(num),num)

modify(num)
print("函数外的num:",id(num),num)

#2) 可变对象（list,dict,set...）：地址传递
list1=[10,20,30]
def modify_list(list1):
    print("函数内的list1:",id(list1),list1)
    list1.append(40)
    print("修改后的(内部）list1:",id(list1),list1)

modify_list(list1)
print("函数外的list1:",id(list1),list1)



'''二、参数的类型和用法'''
# 位置参数
def fun1(a,b,c):
    print(a,b,c)

fun1(10,20,30)

# 默认参数
def fun2(a,b,c=1000):
    print(a,b,c)
fun2(10,20)

fun2(10,20,99)